#include "Posicion.h"

Posicion::Posicion() {
	x = 0; y =0;
}

Posicion::Posicion(const Posicion& otraPosicion) {
	this->x = otraPosicion.x;
	this->y = otraPosicion.y;
}

const unsigned int Posicion::getX() const {
    return x;
}

const unsigned int Posicion::getY() const {
    return y;
}

void Posicion::setX(unsigned int x) {
    this->x = x;
}

void Posicion::setY(unsigned int y) {
    this->y = y;
}

/* Dado un numero entero, permite incrementar o decrementar la posicion en x. */

void Posicion::incOrDecX(int n) {
	this->x += n;
}

/* Dado un numero entero, permite incrementar o decrementar la posicion en y. */

void Posicion::incOrDecY(int n) {
	this->y += n;
}

void Posicion::cambiarCoordenadasNumericas(char x, char y) {
	this->setX(charXToInt(x));
	this->setY(charYToInt(y));
}

/* Dado un caracter para la posicion "x" en la tabla de ajedrez,
 * devuelve el entero que lo representa en una matriz. */

int Posicion::charXToInt(char x) const {
	return (x - 'a');
}

/* Dado un caracter para la posicion "y" en la tabla de ajedrez,
 * devuelve el entero que lo representa en una matriz. */

int Posicion::charYToInt(char y) const {
	return (8 - (y - '0'));
}

/* Devuelve el caracter que representa la ubicacion en "x"
 * en una tablero de ajedrez. */

char Posicion::intXToChar() const {
	return (this->x +  'a');
}

/* Devuelve el caracter que representa la ubicacion en "y"
 * en una tablero de ajedrez. */

char Posicion::intYToChar() const {
	return ((8 - this->y) + '0' );
}

bool Posicion::estaDentroDeTabla() const {
	return ((this->getX() < MAX_COORD)  && (this->getY() < MAX_COORD) &&
			(this->getX() >= 0)  && (this->getY() >=  0));
}

Posicion::~Posicion() {
}
